# 1. 生成0-9有规律的列表
# while循环实现
list1 = []
i = 0
while i < 10:
    list1.append(i)
    i += 1
print(list1)

# for循环实现
list2 = []
for i in range(10):
    list2.append(i)
print(list2)

# 推导式实现 for循环的返回值i放在最左边，将返回值依次放入列表中
list3 = [i for i in range(10)]
print(list3)

# 2. 生成0-9之间的偶数
# for循环实现
list1 = []
for i in range(10):
    if i % 2 == 0:
        list1.append(i)
print(list1)

# 推导式实现 for + if
list2 = [i for i in range(10) if i % 2 == 0]
print(list2)

# 3. 列表中生成元组
# for循环实现
list1 = []
for i in range(1,3):
    for j in range(3):
        list1.append((i,j))
print(list1)

# 推导式实现 for +for for循环嵌套
list2 = [(i, j) for i in range(1, 3) for j in range(3)]
print(list2)

# 字典推导式
# 1. 生成一个字典
dict1 = {i: i**2 for i in range(1, 5)}
print(dict1)

# 2. 合并两个列表为一个字典
list1 = ['name', 'age', 'sex']
list2 = ['caicai', 18, '女']
# len获取到列表的长度l，range生成0-l的有规律数字，
# i在有规律的数字里面循环返回的i是0-l中的数字
# for左边的数据就是放入字典中的数据
dict1 = {list1[i]: list2[i] for i in range(len(list1))}
# 如果列表长度不一致 则i循环的长度是短的那个列表的长度
print(dict1)

# 3. 获取字典中符合要求的数据 提取数字》=200的信息
dict1 = {'小A': 200, '小B': 189, '小C': 201, '小D': 199, '小E': 230}
# key, value 在dict1.items()获取到的字典元组中遍历拆包得到key，value，判断value值
dict2 = {key: value for key, value in dict1.items() if value >= 200}
print(dict2)

# 集合推导式
# 1. 将列表中的数据生成一个平方的集合
list1 = [1, 2, 3, 1]
set1 = {i**2 for i in list1}   # 集合里面的数据不能重复
print(set1)